﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidades.Reclamos;
using WebApplication.Reclamos;

public partial class frmIncidencia : System.Web.UI.Page
{
    #region ATRIBUTOS

    protected IControllerRecIncidencia _incController;
    
    #endregion

    #region CONSTRUCTOR

    public frmIncidencia() { 
        _incController= new ControllerRecIncidencia();
    }

    #endregion

    #region EVENTOS DEL FORMULARIO

    protected void Page_Load(object sender, EventArgs e)
    {        
        if (!IsPostBack)
        {
            lblMensaje.CssClass = "";
            Nuevo();
            CargarClientes();
            CargarAreas();
            CargarEstados();
            verificarTipo();
        }
    }

    protected void Nuevo(){
        calFecIncidencia.Enabled = true;
        calFecSolucion.Enabled = true;
        cmbArea.Enabled = true;
        cmbEstado.Enabled = true;
        txtAcciones.Enabled = true;
        txtDetalle.Enabled = true;
        txtResponsable.Enabled = true;
        txtContacto.Enabled = true;        
        btnGuardar.Visible = true;  

        lblCodigo.Text = "Autogenerado";        
        txtAcciones.Text = "";
        txtDetalle.Text = "";
        txtResponsable.Text = "";
        txtContacto.Text = "";
        cmbArea.SelectedValue = "1";
        cmbEstado.SelectedValue = "1";
        hdValue.Value = "";        
    }

    protected void verificarTipo(){
        String accion = (Session["incidencia_action"] == null) ? "" : Session["incidencia_action"].ToString();
        if (accion.Equals("visualizar"))
        {
            calFecIncidencia.Enabled = false;
            calFecSolucion.Enabled = false;
            cmbArea.Enabled = false;
            cmbEstado.Enabled = false;
            txtAcciones.Enabled = false;
            txtDetalle.Enabled = false;
            txtResponsable.Enabled = false;
            txtContacto.Enabled = false;            
            btnGuardar.Visible = false;
            Cargar();
        }
        else if (accion.Equals("modificar")) {
            calFecIncidencia.Enabled = true;
            calFecSolucion.Enabled = true;
            cmbArea.Enabled = true;
            cmbEstado.Enabled = true;
            txtAcciones.Enabled = true;
            txtDetalle.Enabled = true;
            txtResponsable.Enabled = true;
            txtContacto.Enabled = true;
            btnGuardar.Visible = true;
            Cargar();
        }              
    }

    //Cargar datos del incidente
    protected void Cargar() {
        int codigo = (Session["incidencia_codigo"] == null) ? 0 : Convert.ToInt32(Session["incidencia_codigo"].ToString());
        if (codigo > 0) {
            RecIncidencia be = new RecIncidencia();
            be.IdIncidencia = codigo;
            hdValue.Value = codigo.ToString();
            RecIncidencia lista = _incController.obtenerIncidencia(codigo);

            if(lista!=null){
                hdValue.Value = lista.IdIncidencia.ToString();
                lblCodigo.Text = lista.IdIncidencia.ToString();

                calFecIncidencia.SelectedDate = lista.FecIncidencia;
                txtFecIncidencia.Text = lista.FecIncidencia.ToString("MM/dd/yyy");                
                txtFecSolucion.Text = lista.FecSolucion.ToString("MM/dd/yyy");
                calFecSolucion.SelectedDate = lista.FecSolucion;
                txtAcciones.Text = lista.Acciones;
                txtDetalle.Text = lista.Detalle;
                txtResponsable.Text = lista.Responsable;
                txtContacto.Text = lista.Contacto;
                cmbArea.SelectedValue = lista.IdArea.ToString();
                cmbEstado.SelectedValue = lista.Estado.ToString();
                cmbCliente.SelectedValue = lista.IdCliente.ToString();
            }
        }
    }

    //Cargar lista de clientes
    protected void CargarClientes()
    {
        List<GenCliente> lista = _incController.listarClientes();
        if (lista.Count > 0)
        {
            cmbCliente.DataSource = lista;
            cmbCliente.DataTextField = "nombre";
            cmbCliente.DataValueField = "idCliente";
            cmbCliente.DataBind();
            cmbCliente.Items.Insert(0, new ListItem(Constantes.STATUS_SELECT, Constantes.CODE_SELECT));
        }
        else
        {
            cmbCliente.Items.Clear();
        }
    }

    //Cargar lista de areas
    protected void CargarAreas()
    {
        List<RecArea> lista = _incController.listarAreas();
        if (lista.Count > 0)
        {
            cmbArea.DataSource = lista;
            cmbArea.DataTextField = "nomArea";
            cmbArea.DataValueField = "idArea";
            cmbArea.DataBind();
            cmbArea.Items.Insert(0,new ListItem(Constantes.STATUS_SELECT, Constantes.CODE_SELECT));
        }
        else
        {
            cmbArea.Items.Clear();
        }
    }

    //Cargar lista de estados
    protected void CargarEstados()
    {
        cmbEstado.Items.Clear();
        cmbEstado.Items.Add(new ListItem(Constantes.STATUS_SELECT, Constantes.CODE_SELECT));
        cmbEstado.Items.Add(new ListItem(Constantes.STATUS_OPEN, Constantes.CODE_OPEN));
        cmbEstado.Items.Add(new ListItem(Constantes.STATUS_CLOSE,Constantes.CODE_CLOSE));
    }

   
    protected Boolean Validar() {
        return true;
    }

    #endregion

    #region EVENTOS DE BOTONES

    protected void btnGuardar_Click(object sender, EventArgs e)
    {

        Boolean resultado = true;
        resultado = Validar();
        if (resultado)
        {

            String accion = (Session["incidencia_action"] == null) ? "" : Session["incidencia_action"].ToString();

            RecIncidencia be = new RecIncidencia();
            be.IdCliente = (cmbCliente.SelectedValue=="")?0: Int32.Parse(cmbCliente.SelectedValue);
            be.FecIncidencia = (calFecIncidencia.SelectedDate.Date!= DateTime.MinValue)?calFecIncidencia.SelectedDate: DateTime.Now;
            be.FecSolucion = (calFecSolucion.SelectedDate.Date != DateTime.MinValue) ? calFecSolucion.SelectedDate : DateTime.Now;
            be.Detalle = txtDetalle.Text;
            be.Acciones = txtAcciones.Text;
            be.Responsable = txtResponsable.Text;
            be.Contacto = txtContacto.Text;
            be.Estado = (cmbEstado.SelectedValue == "") ? 0 : Int32.Parse(cmbEstado.SelectedValue);
            be.IdArea = (cmbArea.SelectedValue == "") ? 0 : Int32.Parse(cmbArea.SelectedValue);

            if (accion.Equals("modificar"))
            {
                be.IdIncidencia = Convert.ToInt32(hdValue.Value);
                be.IdIncidencia = _incController.actualizarIncidencia(be);                
            }
            else {
                be.IdIncidencia = _incController.insertarIncidencia(be);                            
            }

            if (resultado)
            {
                Session["incidencia_rpta"] = 1;
                Response.Redirect("frmMtoIncidencias.aspx");
            }
            else
            {
                lblMensaje.Text = Constantes.MSG_ERROR;
                lblMensaje.CssClass = "lblError";
            }
        }
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Session["incidencia_codigo"] = null;
        Session["incidencia_action"] = null;
        Session["incidencia_visible"] = null;
        Response.Redirect("frmMtoIncidencias.aspx");
    }
    #endregion

    #region EVENTOS DEL CALENDARIO

    protected void SelectFecha(object sender, EventArgs e) {
        try
        {
            Calendar obj = (Calendar)sender;
            txtFecIncidencia.Text = obj.SelectedDate.ToString("MM/dd/yyyy");
        }
        catch { 
        
        }
    }

    protected void SelectFechaSolucion(object sender, EventArgs e)
    {
        try
        {
            Calendar obj = (Calendar)sender;
            txtFecSolucion.Text = obj.SelectedDate.ToString("MM/dd/yyyy");
        }
        catch
        {

        }
    }

    #endregion
}